package com.guiwu.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 数据库连接检查器
 * 用于检查数据库连接状态
 * 注意：如果需要完整的健康检查功能，请确保spring-boot-starter-actuator依赖正确加载
 */
@Component
public class DatabaseConnectionChecker {

    @Autowired
    private DataSource dataSource;

    /**
     * 检查数据库连接状态
     * @return 连接是否正常
     */
    public boolean checkDatabaseConnection() {
        try (Connection connection = dataSource.getConnection()) {
            if (connection.isValid(5)) {
                // 执行简单查询测试数据库连接
                try (Statement statement = connection.createStatement()) {
                    statement.execute("SELECT 1");
                    return true;
                }
            }
            return false;
        } catch (SQLException e) {
            System.err.println("数据库连接检查失败: " + e.getMessage());
            return false;
        }
    }

    /**
     * 获取数据库连接信息
     * @return 连接信息字符串
     */
    public String getDatabaseInfo() {
        try (Connection connection = dataSource.getConnection()) {
            return String.format("数据库: %s, 驱动: %s",
                connection.getMetaData().getDatabaseProductName(),
                connection.getMetaData().getDriverName());
        } catch (SQLException e) {
            return "无法获取数据库信息: " + e.getMessage();
        }
    }
}
